//抽象类  包含抽象方法 一般没有任何具体内容的实现    也可以包含实例方法 抽象类似不能被实例化  为了让子类进行实例化实现内部的抽象方法
//抽象类的目的和作用最终都是为了服务子类
(()=>{
    abstract class Animal{
        //抽象方法   不能有具体实现
        //抽象属性 不怎么用
        abstract name:string='小甜甜'
        abstract eat()
        //实例方法
        sayHi(){
            console.log('您好');
            
        }
    }
    // const ani:Animal = new Animal()
    class Dog extends Animal {
        name:string = '小王'
        eat(){
            console.log('好吃');
            
        }
    }
    const dog:Dog = new Dog()
    dog.eat()
    dog.sayHi()
    console.log(dog.name);
    
})()